package logic.lbs;

import logic.util.ScreenUtil;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.text.Layout.Alignment;
import android.text.StaticLayout;
import android.text.TextPaint;

import com.amap.api.maps2d.AMap;
import com.amap.api.maps2d.AMapUtils;
import com.amap.api.maps2d.CameraUpdateFactory;
import com.amap.api.maps2d.model.BitmapDescriptor;
import com.amap.api.maps2d.model.BitmapDescriptorFactory;
import com.amap.api.maps2d.model.LatLng;


/**
 * 高德地图工具类类
 *
 * @author 刘宾
 * @date 2015年1月22日 上午9:16:26
 */
public class MapUtils
{
	/** 默认缩放比例 */
	public static float               ZOOM      = 17;
	/** 默认地图移动动画时间 */
	private static final int          ANIM_TIME = 1500;

	/**
	 * 在图片上绘制文字
	 *
	 * @param gResId
	 *            图片资源
	 * @param gText
	 *            文字
	 * @return
	 */
	public static Bitmap drawTextToBitmap(Context context,int gResId, String gText) {
		Bitmap src = BitmapFactory.decodeResource(context.getResources(), gResId);
		Bitmap newBitmap = Bitmap.createBitmap(src.getWidth(), src.getHeight(), Config.ARGB_8888);
		Canvas canvas = new Canvas(newBitmap); //画布
		canvas.drawBitmap(src, 0, 0, null);
		TextPaint textPaint = new TextPaint(); //画笔
		textPaint.setAntiAlias(true);//是否抗锯齿
		textPaint.setColor(Color.WHITE);
		textPaint.setTextSize(ScreenUtil.dip2px(12));

		/**
		 * 参数含义：
		 * 1.要绘制的字符串
		 * 2.画笔对象
		 * 3.layout的宽度，字符串超出宽度时自动换行。
		 * 4.layout的样式，有ALIGN_CENTER， ALIGN_NORMAL， ALIGN_OPPOSITE 三种。
		 * 5.相对行间距，相对字体大小，1.5f表示行间距为1.5倍的字体高度。
		 * 6.相对行间距，0表示0个像素。实际行间距等于这两者的和。
		 * 7.还不知道是什么意思，参数名是boolean includepad。
		 */
		StaticLayout sl = new StaticLayout(gText, textPaint, newBitmap.getWidth() - 8, Alignment.ALIGN_CENTER, 1.0f, 0.0f, false);
		//        System.out.println("--newBitmap---"+newBitmap.getWidth()+","+newBitmap.getHeight());
		//        System.out.println("--StaticLayout---"+sl.getWidth()+","+sl.getHeight());
		//      final int x =  newBitmap.getWidth() - sl.getWidth()-4;
		final int y = (newBitmap.getHeight() - sl.getHeight()) / 3;
		//      System.out.println("--x---"+x);
		//        System.out.println("--y---"+y);
		//把当前画布的原点移到(x,y),默认原点为(0,0)
		canvas.translate(4, y);
		sl.draw(canvas);
		return newBitmap;
	}

	/**
	 * 绘制自定义MarKer图标
	 *
	 * @param gResId
	 *            图片资源
	 * @param gText
	 *            文字
	 * @return
	 */
	public static BitmapDescriptor getIcon(Context context,int gResId, String gText){
		return BitmapDescriptorFactory.fromBitmap(drawTextToBitmap(context,gResId, gText));
	}

	/**
	 * 计算两个经纬度的距离
	 *
	 * @param latLng
	 * @return
	 */
	public static float calculateDistance(LatLng latLng1,LatLng latLng2) {
		return AMapUtils.calculateLineDistance(latLng1, latLng2);
	}

	/**
	 * 移动地图
	 */
	public static void moveMap(AMap aMap,LatLng latLng){
		aMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
	}
	/**
	 * 移动地图,带动画
	 */
	public static void animMap(AMap aMap,LatLng latLng){
		aMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, ZOOM), ANIM_TIME, null);
	}

	/**
	 * 格式化距离：m、km
	 * @param distance 距离，单位：米
	 * @return
	 */
	public static String formatDistance(float distance){
		int value = (int)distance;
		if(value<1000){
			return value+"m";
		}
		return value/1000f + "km";
	}
}
